Known data storage systems use Redundant Arrays of Inexpensive Disks (RAID) and associated RAID controllers. RAID functionality includes creating a logical unit out of physical drives according to different RAID levels; deleting the logical unit; expanding the RAID; extending the RAID; migrating the RAID Level; recovering the logical unit; rebuilding the logical unit; and managing the physical drives. Commonly used RAID levels include RAID 0 (Striping); RAID 1 (Mirroring); RAID 5 (Distributed parity); and ADG (Advanced Data guarding). The supported RAID levels vary with respect to the type of RAID controller and manufacturer.
Basic SCSI (Small Computer System Interconnect) controllers do not provide any of the above mentioned RAID functionalities. The SCSI controller manages the write/read of data to the physical drives with proper synchronization. Thus a RAID Controller provides the RAID functionality described above in addition to coordinating communication between the SCSI devices on the SCSI bus and the computer.
It is known to notify a RAID controller of asynchronous events, such as disk drive hardware error, that occur in the controlled RAID system. Such a RAID controller can then notify a host driver of the RAID system for subsequent appropriate action to be taken.
Conventional computer systems using RAID-based data storage systems are arranged to poll the storage system in order to communicate detected events to software components of the computer system. In response to the polling call, the RAID controller provides event data in a thread (otherwise referred to as an Asynchronous Event Queue) for processing.
Conventional RAID controllers do not allow for communication of asynchronous events without being polled.
Polling by a mini-port driver in order to keep event information detected by a RAID controller current creates network traffic and system overhead. Polling also allows for event information to become stale for certain periods as event information detected is not updated until the next polling call. Since a computer system may support a number of RAID controllers, it may be necessary to poll each controller to update detected asynchronous event information.
It is known to increase the polling frequency in an effort to maintain more current asynchronous event information. However, such an approach undesirably increases data traffic and overhead.